#!/usr/bin/python3
# _*_ coding: utf-8 _*_
#
# Copyright (C) 2024 - 2024 heihieyouheihei, Inc. All Rights Reserved 
#
# @Time    : 2024/8/23 23:16
# @Author  : Yuyun
# @File    : leetcode_42_接雨水.py
# @IDE     : PyCharm

"""
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。

示例 1：
输入：height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出：6
解释：上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图，在这种情况下，可以接 6 个单位的雨水（蓝色部分表示雨水）。

示例 2：
输入：height = [4,2,0,3,2,5]
输出：9

提示：
n == height.length
1 <= n <= 2 * 10^4
0 <= height[i] <= 10^5
"""

class Solution:

    #   单调栈、从左到右按行计算
    def rain(self, height):
        #   存储下标
        stack = []
        length = len(height)
        #   存储结果
        result = 0
        for i in range(length):
            #   栈不空，且 当前高度 > 栈顶高度
            while stack and height[i] > height[stack[-1]]:
                #   取凹槽底部
                mid = height[stack.pop()]
                #   若弹出栈顶（前面元素最大高度）后，栈为空，表示此处无法储水
                if stack:
                    # 雨水高度是 min(凹槽左侧高度, 凹槽右侧高度) - 凹槽底部高度
                    height_diff = min(height[stack[-1], height[i]]) - mid
                    width = i - stack[-1] - 1
                    result += height_diff * width
            #   栈空，或者，高度小于栈顶高度
            stack.append(i)
        return result
    #   双指针法，从左到右按列计算
    def rain_I(self, height):

        length = len(height)
        #   从左到右存储该位置处的左侧最高
        leftMax = [0] * length
        leftMax[0] = height[0]
        for i in range(1, length):
            leftMax = max(leftMax[i - 1], height[i])
        #   从右到左存储该位置处的右侧最高
        rightMax = [0] * length
        rightMax[-1] = height[-1]
        for j in range(length - 2, -1, -1):
            rightMax[j] = max(rightMax[j + 1], height[j])
        #   从左到右按列计算储水高度和，第一列和最后一列不储水
        result = 0
        for k in range(1, length - 1):
            height_diff = min(leftMax[k], rightMax[k]) - height[i]
            result += height_diff
        return result


if __name__ == '__main__':
    height = list(map(int, input().split()))
    solution = Solution()
    result = solution.rain(height)
    print(result)
